/********************** TLB FLUSHEN *************************/
/* void invalid_tlb(void *address) */
.align
.global invalidate_data_tlb_at

invalidate_data_tlb_at:
    MCR p15, 0, r0, c8, c6, 0
    MOV pc, r14



/********************** CP15 CONTROL *************************/
/* register_t read_cp15_control_reg() */
.align
.global read_cp15_control_reg

read_cp15_control_reg:
    MOV r0, #0
    MRC p15, 0, r0, c1, c0, 0
    MOV pc, r14

/* void write_cp15_control_reg(register_t value) */
.align
.global write_cp15_control_reg

write_cp15_control_reg:
	MCR p15, 0, r0, c1, c0, 0
	MOV pc, r14



/********************** CP15 TTB *************************/
/* void write_cp15_ttb_reg(void *address) */
.align
.global write_cp15_ttb_reg

write_cp15_ttb_reg:
    MCR p15, 0, r0, c2, c0, 0
    MOV pc, r14



/********************** CP15 DOMAIN *************************/
/* register_t read_cp15_domain_reg() */
.align
.global read_cp15_domain_reg

read_cp15_domain_reg:
    MOV r0, #0
    MRC p15, 0, r0, c3, c0, 0
    MOV pc, r14

/* void write_cp15_domain_reg(register_t value) */
.align
.global write_cp15_domain_reg

write_cp15_domain_reg:
    MCR p15, 0, r0, c3, c0, 0
    MOV pc, r14

